home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 099 (1989-05-15)(Ossowski, Stefan)(DE)(PD).zip / Taifun 099 (1989-05-15)(Ossowski, Stefan)(DE)(PD).adf / PCQ / Runtime / stringlib.asm < prev    next >
Assembly Source File  |  1989-03-31  |  2KB  |  140 lines

  1.  
  2. *    StringLib.asm (of PCQ Pascal runtime library)
  3. *    Copyright (c) 1989 Patrick Quaid
  4.  
  5. *    This module just defines a few string handling routines.
  6. *    Note that I gave them all different names so that you could use
  7. *    them however you want.
  8.  
  9.     SECTION    One,CODE
  10.  
  11.     XREF    _p%new
  12.     XREF    _p%dispose
  13.  
  14.     XDEF    _STREQ
  15.     XDEF    _streq
  16. _STREQ:
  17. _streq:
  18.     move.l    4(sp),a1
  19.     move.l    8(sp),a0
  20. 1$:
  21.     move.b    (a1)+,d0
  22.     bsr    _INUP
  23.     move.b    d0,d1
  24.     move.b    (a0)+,d0
  25.     bsr    _INUP
  26.     cmp.b    d0,d1
  27.     bne.s    2$
  28.     tst.b    d1
  29.     bne    1$
  30.     moveq    #-1,d0
  31.     rts
  32. 2$:
  33.     moveq    #0,d0
  34.     rts
  35. 3$:
  36.     moveq    #-1,d0
  37.     rts
  38.  
  39.     XDEF    _STRCMP
  40.     XDEF    _strcmp
  41. _STRCMP:
  42. _strcmp:
  43.     move.l    4(sp),a1
  44.     move.l    8(sp),a0
  45. 1$:
  46.     move.b    (a0)+,d0
  47.     bsr    _INUP
  48.     move.b    d0,d1
  49.     move.b    (a1)+,d0
  50.     bsr    _INUP
  51.     cmp.b    d0,d1
  52.     blt.s    2$
  53.     bgt.s    3$
  54.     tst.b    d0
  55.     beq.s    4$
  56.     bra    1$
  57. 2$:
  58.     moveq    #-1,d0
  59.     rts
  60. 3$:
  61.     moveq    #1,d0
  62.     rts
  63. 4$:
  64.     moveq    #0,d0
  65.     rts
  66.  
  67.     XDEF    _STRLEN
  68.     XDEF    _strlen
  69. _STRLEN:
  70. _strlen:
  71.     move.l    4(sp),d1
  72.     move.l    d1,a0
  73. 1$:
  74.     tst.b    (a0)+
  75.     bne.s    1$
  76.     move.l    a0,d0
  77.     sub.l    d1,d0
  78.     subq    #1,d0
  79.     rts
  80.  
  81.     XDEF    _strcpy
  82.     XDEF    _STRCPY
  83. _strcpy
  84. _STRCPY
  85.     move.l    8(sp),a0
  86.     move.l    4(sp),a1
  87. 1$
  88.     move.b    (a0)+,d0
  89.     move.b    d0,(a1)+
  90.     bne    1$
  91.     rts
  92.  
  93.     XDEF    _strcat
  94.     XDEF    _STRCAT
  95. _strcat
  96. _STRCAT
  97.     move.l    8(sp),a0
  98.     move.l    4(sp),a1
  99. 1$    move.b    (a0)+,d0
  100.     bne    1$
  101.     subq.l    #1,a0
  102. 2$    move.b    (a1)+,d0
  103.     move.b    d0,(a0)+
  104.     bne    2$
  105.     rts
  106.  
  107.     XDEF    _RAISE
  108.     XDEF    _raise
  109. _RAISE:
  110. _raise:
  111.     move.w    4(sp),d0
  112.     and.b    #255,d0
  113. _INUP    cmp.b    #'a',d0
  114.     blt.s    1$
  115.     cmp.b    #'z',d0
  116.     bgt.s    1$
  117.     sub.b    #32,d0
  118. 1$:    rts
  119.  
  120.     XDEF    _ALLOCSTRING
  121.     XDEF    _AllocString
  122.     XDEF    _allocstring
  123. _ALLOCSTRING:
  124. _AllocString:
  125. _allocstring:
  126.     jsr    _p%new
  127.     rts
  128.  
  129.     XDEF    _FREESTRING
  130.     XDEF    _FreeString
  131.     XDEF    _freestring
  132. _FREESTRING:
  133. _FreeString:
  134. _freestring:
  135.     move.l    4(sp),d0
  136.     jsr    _p%dispose
  137.     rts
  138.  
  139.    end
  140.